package com.xdjj.market.common.pojo;

import lombok.Data;

@Data
public class ResultDto<T> {
    /**
     * 响应的数据状态码
     * 20000 : 表示本次请求一切正常，响应也正常
     * 50000 ： 本次操作出现的错误（具体错误信息需要有针对性的返回给前端）
     *      用户名或密码错误
     *      没有任何员工数据
     *      根据员工id删除账号失败
     */
    private Integer code = 20000;

    /**
     * 每个状态对应的本次操作的描述信息
     * 20000 ：操作成功
     * 50000 ：操作失败
     */
    private String msg ;

    /**
     * 本次请求返回给客户端的数据
     */
    private T data;

    /**
     *  封装分页相关信息
     */
    private Integer pages;
    private Long total;

    //无参构造器（默认自带）
    public ResultDto() {
    }
    //有参构造器（自定）
    public ResultDto(Integer code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    /**
     * 调用成功之后的结果
     * @param msg
     * @param data
     * @return
     * @param <T>
     */
    public static <T> ResultDto<T> success(String msg,T data) {
        return new ResultDto<>(20000,msg,data);
    }

    /**
     * 失败的结果
     * @param code
     * @param msg
     * @return
     * @param <T>
     */
    public static <T> ResultDto<T> error(Integer code,String msg) {
        return new ResultDto<>(code,msg,null);
    }

    /**
     * 自定义结果
     * @param code
     * @param msg
     * @param data
     * @return
     * @param <T>
     */
    public static <T> ResultDto<T> of(Integer code, String msg, T data) {
        return new ResultDto<>(code,msg,data);
    }

//    public String getMsg() {
//        return msg;
//    }
//
//    public void setMsg(String msg) {
//        this.msg = msg;
//    }
//
//    public T getData() {
//        return data;
//    }
//
//    public void setData(T data) {
//        this.data = data;
//    }
//
//    public Integer getPages() {
//        return pages;
//    }
//
//    public void setPages(Integer pages) {
//        this.pages = pages;
//    }
//
//    public Long getTotal() {
//        return total;
//    }
//
//    public void setTotal(Long total) {
//        this.total = total;
//    }
}
